//package com.tjhk.demo.kafka.config;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
//import org.springframework.kafka.config.KafkaListenerContainerFactory;
//import org.springframework.kafka.core.ConsumerFactory;
//import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
//import org.springframework.kafka.core.DefaultKafkaProducerFactory;
//import org.springframework.kafka.core.KafkaTemplate;
//import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
//import org.springframework.kafka.listener.ContainerProperties;
//
///**
// * 第二个kafka配置
// *
// */
//@Configuration
//public class SecondKafkaConfig {
//
//    /**
//     * 读取第二个kafka配置
//     *
//     * @return 第二个kafka配置
//     */
//    @ConfigurationProperties(prefix = "spring.kafka.second")
//    @Bean
//    public KafkaProperties secondKafkaProperties() {
//        return new KafkaProperties();
//    }
//
//    /**
//     * 构建第二个kafka的生产者发送template
//     *
//     * @param secondKafkaProperties 第二个kafka配置
//     * @return 第二个kafka的生产者发送template
//     */
//    @Bean
//    public KafkaTemplate<String, byte[]> secondKafkaTemplate(
//            @Autowired @Qualifier("secondKafkaProperties") KafkaProperties secondKafkaProperties) {
//        return new KafkaTemplate<>(secondProducerFactory(secondKafkaProperties));
//    }
//
//    /**
//     * 构建第二个kafka的消费者监听容器工厂
//     *
//     * @param secondKafkaProperties 第二个kafka配置
//     * @return 第二个kafka的消费者监听容器工厂
//     */
//    @Bean("secondKafkaListenerContainerFactory")
//    public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, byte[]>>
//    secondKafkaListenerContainerFactory(@Autowired @Qualifier("secondKafkaProperties") KafkaProperties secondKafkaProperties) {
//        ConcurrentKafkaListenerContainerFactory<String, byte[]> factory =
//                new ConcurrentKafkaListenerContainerFactory<>();
//        factory.setConsumerFactory(secondConsumerFactory(secondKafkaProperties));
//        // 开启批量消费
//        factory.setBatchListener(true);
//        factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL);
//        return factory;
//    }
//
//    /**
//     * 新建第二个kafka的消费者工厂
//     *
//     * @param secondKafkaProperties 第二个kafka配置
//     * @return 第二个kafka的消费者工厂
//     */
//    private ConsumerFactory<? super String, ? super byte[]> secondConsumerFactory(KafkaProperties secondKafkaProperties) {
//        return new DefaultKafkaConsumerFactory<>(secondKafkaProperties.buildConsumerProperties());
//    }
//
//    /**
//     * 新建第二个kafka的生产者工厂
//     *
//     * @param secondKafkaProperties 第二个kafka配置
//     * @return 第二个kafka的生产者工厂
//     */
//    private DefaultKafkaProducerFactory<String, byte[]> secondProducerFactory(KafkaProperties secondKafkaProperties) {
//        return new DefaultKafkaProducerFactory<>(secondKafkaProperties.buildProducerProperties());
//    }
//}
